package com.wjx.demo.data

//密封类  使用 sealed 修饰类，密封类可以有子类，但是所有的子类都必须要内嵌在密封类中。
sealed class Expr

data class Const(val num: Double) : Expr()
data class Sum(val num1: Double, val num2: Double) : Expr()
object NotNum : Expr()

fun getVal(expr: Expr): Double = when (expr) {
    is Const -> expr.num
    is Sum -> expr.num1 + expr.num2
    NotNum -> Double.MIN_VALUE
}

fun main(args: Array<String>) {

    println(
            getVal(Sum(2.0, 3.0))
    )
}